package com.dlc.shop.service;

import com.dlc.shop.bean.app.dto.ShopCartOrderDto;
import com.dlc.shop.bean.model.Order;
import com.dlc.shop.bean.model.OrderItem;
import com.dlc.shop.bean.vo.SkuStockVO;
import com.dlc.shop.common.response.ServerResponseEntity;

import java.util.List;


/**
 * 库存锁定信息
 *
 * @author lhd
 * @date 2022-05-06 17:27:53
 */
public interface SkuStockLockService {

    /**
     * 锁定库存
     * @param skuStockLocksParam 参数
     * @param shopCartOrders
     * @return 是否成功
     */
    ServerResponseEntity<?> lock(List<SkuStockVO> skuStockLocksParam, List<ShopCartOrderDto> shopCartOrders);

    /**
     * 锁定库存
     * @param skuStockList
     * @return
     */
    String lockStock(List<SkuStockVO> skuStockList);

    /**
     * 根据订单号进行库存解锁
     * @param orders 订单信息
     */
    void unlockStock(List<Order> orders);
    /**
     * 正式锁定库存，标记为使用状态
     * @param orderItems 订单项列表
     */
    void markerStockUse(List<OrderItem> orderItems);

    /**
     * 锁定调拨订单
     * @param skuStockList 库存锁定参数
     * 操作后的redis库存信息
     */
    String lockAllotOrder(List<SkuStockVO> skuStockList);

    /**
     * 调拨订单减少锁定库存
     * @param skuStockList 库存锁定参数
     * @return 操作后的redis库存信息
     */
    String reduceLockAllotOrder(List<SkuStockVO> skuStockList);

    /**
     * 取消订单 - 解锁库存
     * @param skuStockList
     */
    void unLockStock(List<SkuStockVO> skuStockList);
}
